/************************ 普通授权过程 ***************************
 *
 * 判断是否需要普通授权 checkNeedAuth
 * 1，获取 juyou-ticket-LW0001 的cookie值。如果获取不到，需要授权。
 * 2，通过这个cookie，在redis中查看 juyou_ticket_COOKIE 中的id值。如果存在不需要授权，否则需要。
 *
 * 普通授权 auth1
 * 1，在redis机构资源中查看，是否存在该company_code
 * 2，通过机构信息拼地址，跳转微信授权接口。
 * 
 * 微信回调接口 getwxcode
 * 1，获取code，解析state
 * 2，根据access_token和openid获取用户信息。
 * 3，用user_base和company_code在数据库中查询该用户，没有：插入，有：更新昵称和头像。
 * 4，生成随机数，存cookie，key是juyou-ticket-登录机构code，
 * 5，存redis，juyou_ticket_随机数 做key。
 * 6，跳转回去。
 *
**************************************************************/


/************************ 支付授权过程 ***************************
 *
 * 判断是否需要支付授权 checkPayNeedAuth
 * 1，通过juyou-ticket-LW0001 获取cookie，如果没有，需要重新授权。（这种情况非常不常见）
 * 2，通过这个cookie 去redis中以 juyou_ticket_COOKIE 获取用户的pay_wxid信息，
 *    pay_wxid { LW0001_PAYWXID : OPENID }
 * 3,查看company_code + '_' + 这个机构的pay_wxid，作为key是否存在openid。
 * 这样是防止机构更换支付公众号。
 * 4，如果有值，不需要授权，如果没有，需要授权
 *
 * 支付授权 payauth
 * 1，在redis机构资源中查看，是否存在该company_code
 * 2，拼微信授权地址参数。
 * 3，将需要的参数，和回跳地址，存在redis中，将这个key存入授权的state参数。
 * 4，跳转微信授权
 *
 * 微信回跳 paygetwxcode
 * 1，获取微信返回的code，和state。并解析state
 * 2，调用微信接口获取token和openid，把openid存入redis。
 * 3，跳转回去。
 *
**************************************************************/



const Controller = require('egg').Controller;

class MemberController extends Controller {


    //0,不需要授权， 1，需要授权
    async checkCashNeedAuth () {

        const { ctx, app } = this;
        const { logger } = ctx;

        //要授权的companycode。
        const company_code = ctx.query.company_code;

        //判断是否已经登录
        const sessionid = ctx.cookies.get('juyou-ticket-' + company_code);
        //logger.info('juyou_ticket_' + sessionid);

        if(sessionid === undefined){
            //logger.info('没有登录');
            ctx.helper.error('没有登录');
            return;
        }

        const companyInfo = await ctx.service.company.info(company_code);
        //logger.info(companyInfo);
        if(companyInfo == undefined){
            ctx.helper.error(102, '该机构没有配置服务号');
            return;
        }

        const str_cash_wxid = await ctx.service.member.redisInfo(sessionid, 'cash_wxid');
        //logger.info(str_cash_wxid);

        if(str_cash_wxid == null){
            ctx.helper.success('1');
            //logger.info('需要提现授权1');
            return;
        }

        //机构换提现wxid了。
        if(companyInfo.cash_wxid != str_cash_wxid){
            ctx.helper.success('1');
            //logger.info('需要提现授权3');
            return;
        }

        const str_cash_openid = await ctx.service.member.redisInfo(sessionid, 'cash_openid');
        //logger.info(str_cash_openid);

        if(str_cash_openid == null){
            ctx.helper.success('1');
            //logger.info('需要提现授权2');
            return;
        }

        //不需要授权
        ctx.helper.success('0');
        //logger.info('不需要提现授权');

    }


    async cashauth () {
        console.log('cashauth');

        const { ctx, app } = this;
        const { logger } = ctx;

        //1.根据company_code获得 wxid,appid
        //登录的company。
        const company_code = ctx.query.company_code;

        const companyInfo = await ctx.service.company.info(company_code);

        if(companyInfo == undefined){
            ctx.helper.error(102, '该机构没有配置服务号');
            return;
        }

       // const cash_company_code = 'LW99999'; //ctx.query.company_code;
        const rurl = ctx.query.rurl;

        //logger.info(cash_company_code);
        //logger.info(rurl);

        // if(cash_company_code === undefined){
        //     ctx.helper.error(103, '需要cash_company_code参数');
        //     return;
        // }

        if(rurl === undefined){
            ctx.helper.error(1031, '需要rurl参数');
            return;
        }

        const cashCompanyInfo = await ctx.service.company.infoByWXid(companyInfo.cash_wxid);
        //const companyInfo = await ctx.service.company.info(cash_company_code);
        //logger.info(cashCompanyInfo);

        if(cashCompanyInfo == undefined){
            ctx.helper.error(102, '该提现机构没有配置服务号');
            return;
        }

        const successurl = 'https://api.hidlq.com/v1/un/cashgetwxcode';

        let url = 'https://open.weixin.qq.com/connect/oauth2/authorize?';

        url += 'appid=' + cashCompanyInfo.appid;

        url += '&redirect_uri=' + encodeURIComponent(successurl);

        url += '&response_type=code&scope=snsapi_base';

        const sessionid = ctx.cookies.get('juyou-ticket-' + company_code);

        const uuid = await ctx.service.util.uuid(40, 16);

        // const msg = company_code + '@dlq@' + companyInfo.appid + '@dlq@' + companyInfo.appsecret + '@dlq@' + companyInfo.wxid + 
        // '@dlq@' + companyInfo.cash_wxid + '@dlq@' + rurl + '@dlq@' + sessionid;

        //支付到的company_code，跳转url，用户cookie
        const msg = companyInfo.cash_wxid + '@dlq@' + rurl + '@dlq@' + sessionid;



        //await app.redis.get('tmp').hset('dlq_tmp', uuid, msg);
        await app.redis.get('tmp').set(uuid, msg);
        await app.redis.get('tmp').expire(uuid, 60 * 60 * 24);

        url += '&state=' + uuid + '#wechat_redirect';

        //logger.info(url);

        ctx.redirect(url);

    }



    //由微信授权后跳转，带回code和state中的内容。
    async cashgetwxcode () {

        console.log('cashgetwxcode');

        const { ctx, app } = this;
        const { logger } = ctx;

        const code = ctx.query.code;
        const state = ctx.query.state;

        //logger.info('code : ' + code);
        //logger.info('state : ' + state);

        if(state == undefined){
            ctx.helper.error(103, '缺少 state 参数');
            return;
        }

        //const msg = await app.redis.get('tmp').hget('dlq_tmp', state);
        const msg = await app.redis.get('tmp').get(state);
        //app.redis.get('tmp').del('dlq_tmp', state);

        const arr = msg.split('@dlq@');

        if(arr.length !== 3){
            ctx.helper.error(104, 'state 不正确');
            return;
        }

        const cash_wxid = arr[0];
        const rurl = arr[1];
        const sessionid = arr[2];

        //从哪个机构提现
        // const companyInfo = await ctx.service.company.info(company_code);
        // logger.info(companyInfo);

        //该机构对应的支付的微信
        const wxInfo = await ctx.service.company.infoByWXid(cash_wxid);

        const appid = wxInfo.appid;
        const secret = wxInfo.appsecret;
        //const cash_wxid = wxInfo.wxid;

        //logger.info('要提现的 company_code : ' + company_code);
        // logger.info('要提现的 appid : ' + appid);
        // logger.info('要提现的 secret : ' + secret);
        // logger.info('要提现的 wxid : ' + cash_wxid);
        // logger.info('要跳转的 rurl : ' + rurl);
        // logger.info('用户的 sessionid : ' + sessionid);

        let url = 'https://api.weixin.qq.com/sns/oauth2/access_token?';
        url += 'appid=' + appid;
        url += '&secret=' + secret;
        url += '&code=' + code;
        url += '&grant_type=authorization_code';

        const result = await ctx.curl(url, { dataType: 'json' });

        //console.log(result);
        // logger.info('accesstoken :');
        // logger.info(result);

        if(result.data.errcode !== undefined){
            ctx.helper.error(106, result.data.errmsg);
            return;
        }

        await app.redis.get('member').hset('juyou_ticket_' + sessionid, 'cash_wxid', cash_wxid);
        await app.redis.get('member').hset('juyou_ticket_' + sessionid, 'cash_openid', result.data.openid);

        //logger.info('开始跳转 : ' + rurl + '&v=' + (new Date().getTime()));
        ctx.redirect(rurl);
        //logger.info('跳转跳转 : ' + rurl + '&v=' + (new Date().getTime()));
    }


    //cash



    //company_code 登录的商城机构
    //获取out_sale_company 应该支付到哪个机构。
    //通过这个机构获取pay_wxid，


    //0,不需要授权， 1，需要授权
    async checkPayNeedAuth () {

        const { ctx, app } = this;
        const { logger } = ctx;

        //登录的companycode。
        const company_code = ctx.query.company_code;
        //要支付的companycode。
        const pay_company_code = ctx.query.pay_company_code;

        //判断是否已经登录
        const sessionid = ctx.cookies.get('juyou-ticket-' + company_code);
        //logger.info('juyou_ticket_' + sessionid);

        if(sessionid === undefined){
            //logger.info('没有登录');
            ctx.helper.error('没有登录');
            return;
        }

        const companyInfo = await ctx.service.company.info(company_code);
        //logger.info(companyInfo);
        if(companyInfo == undefined){
            ctx.helper.error(102, '该机构没有配置服务号');
            return;
        }

        const str_pay_wxid = await ctx.service.member.redisInfo(sessionid, 'pay_wxid');
        //logger.info(str_pay_wxid);

        if(str_pay_wxid == null){
            ctx.helper.success('1');
            //logger.info('需要支付授权1');
            return;
        }

        let obj_pay_wxid = JSON.parse(str_pay_wxid);

        //logger.info(obj_pay_wxid);

        //const pay_company_code = 'LW88888';
        const paycompanyInfo = await ctx.service.company.info(pay_company_code);
        //logger.info(paycompanyInfo);
        if(paycompanyInfo == undefined){
            ctx.helper.error(102, '该机构没有配置服务号');
            return;
        }

        if(obj_pay_wxid[paycompanyInfo.pay_wxid] == undefined){
            //不存在
            ctx.helper.success('1');
            //logger.info('需要支付授权2');
            return;
        }

        // const key = pay_company_code + '_' + paycompanyInfo.pay_wxid;

        // logger.info(key);

        // if(obj_pay_wxid[key] == undefined){
        //     //不存在
        //     ctx.helper.success('1');
        //     logger.info('需要支付授权2');
        //     return;
        // }

        // //如果company_code相同，但是pay_wxid不同说明该机构换支付公众号了，需要重新授权。
        // for(let k in obj_pay_wxid){
        //     let arr = k.split('_');
        //     const c = arr[0];
        //     const p = arr[1];
        //     if(c == pay_company_code && paycompanyInfo.pay_wxid != p){
        //         delete obj_pay_wxid[k];
        //         ctx.helper.success('1');
        //         logger.info('需要支付授权3');
        //         return;
        //     }
        // }

        //不需要授权
        ctx.helper.success('0');
        //logger.info('不需要支付授权');

    }



    async payauth () {
        console.log('payauth');

        const { ctx, app } = this;
        const { logger } = ctx;

        //1.根据company_code获得 wxid,appid
        //要支付到的company。
        const company_code = ctx.query.company_code;
        const pay_company_code = ctx.query.pay_company_code;//'LW88888'; //;
        const rurl = ctx.query.rurl;

        // logger.info(pay_company_code);
        // logger.info(rurl);

        if(pay_company_code === undefined){
            ctx.helper.error(103, '需要pay_company_code参数');
            return;
        }

        if(rurl === undefined){
            ctx.helper.error(1031, '需要rurl参数');
            return;
        }

        const companyInfo = await ctx.service.company.info(pay_company_code);
        //logger.info(companyInfo);

        if(companyInfo == undefined){
            ctx.helper.error(102, '该机构没有配置服务号');
            return;
        }

        const paycompanyInfo = await ctx.service.company.infoByWXid(companyInfo.pay_wxid);

        //logger.info(paycompanyInfo);

        if(paycompanyInfo == undefined){
            ctx.helper.error(102, '该支付机构没有配置服务号');
            return;
        }


        const successurl = 'https://api.hidlq.com/v1/un/paygetwxcode';

        let url = 'https://open.weixin.qq.com/connect/oauth2/authorize?';

        url += 'appid=' + paycompanyInfo.appid;

        url += '&redirect_uri=' + encodeURIComponent(successurl);

        url += '&response_type=code&scope=snsapi_base';

        const sessionid = ctx.cookies.get('juyou-ticket-' + company_code);

        const uuid = await ctx.service.util.uuid(40, 16);

        // const msg = company_code + '@dlq@' + companyInfo.appid + '@dlq@' + companyInfo.appsecret + '@dlq@' + companyInfo.wxid + 
        // '@dlq@' + companyInfo.pay_wxid + '@dlq@' + rurl + '@dlq@' + sessionid;

        //支付到的company_code，跳转url，用户cookie
        const msg = companyInfo.pay_wxid + '@dlq@' + rurl + '@dlq@' + sessionid;

        //await app.redis.get('tmp').hset('dlq_tmp', uuid, msg);
        await app.redis.get('tmp').set(uuid, msg);
        await app.redis.get('tmp').expire(uuid, 60 * 60 * 24);

        url += '&state=' + uuid + '#wechat_redirect';

        //logger.info(url);

        ctx.redirect(url);

    }


    //由微信授权后跳转，带回code和state中的内容。
    async paygetwxcode () {

        console.log('paygetwxcode');

        const { ctx, app } = this;
        const { logger } = ctx;

        const code = ctx.query.code;
        const state = ctx.query.state;

        // logger.info('code : ' + code);
        // logger.info('state : ' + state);

        if(state == undefined){
            ctx.helper.error(103, '缺少 state 参数');
            return;
        }

        //const msg = await app.redis.get('tmp').hget('dlq_tmp', state);
        const msg = await app.redis.get('tmp').get(state);
        //app.redis.get('tmp').del('dlq_tmp', state);

        const arr = msg.split('@dlq@');

        if(arr.length !== 3){
            ctx.helper.error(104, 'state 不正确');
            return;
        }

        const pay_wxid = arr[0];
        const rurl = arr[1];
        const sessionid = arr[2];

        //要支付到的机构
        // const companyInfo = await ctx.service.company.info(company_code);
        // logger.info(companyInfo);

        //该机构对应的支付的微信
        const wxInfo = await ctx.service.company.infoByWXid(pay_wxid);

        const appid = wxInfo.appid;
        const secret = wxInfo.appsecret;
        //const pay_wxid = pay_wxid;

        //logger.info('要支付到的 company_code : ' + company_code);
        // logger.info('要支付到的 appid : ' + appid);
        // logger.info('要支付到的 secret : ' + secret);
        // logger.info('要支付到的 wxid : ' + pay_wxid);
        // logger.info('要跳转的 rurl : ' + rurl);
        // logger.info('用户的 sessionid : ' + sessionid);

        let url = 'https://api.weixin.qq.com/sns/oauth2/access_token?';
        url += 'appid=' + appid;
        url += '&secret=' + secret;
        url += '&code=' + code;
        url += '&grant_type=authorization_code';

        const result = await ctx.curl(url, { dataType: 'json' });

        // console.log(result);
        // logger.info('accesstoken :');
        // logger.info(result);

        if(result.data.errcode !== undefined){
            ctx.helper.error(106, result.data.errmsg);
            return;
        }

        //let key = company_code + '_' + pay_wxid;//

        const str_pay_wxid = await ctx.service.member.redisInfo(sessionid, 'pay_wxid');

        let obj_pay_wxid = str_pay_wxid == null ? {} : JSON.parse(str_pay_wxid);

        obj_pay_wxid[pay_wxid] = result.data.openid;
        //logger.info(obj_pay_wxid);

        await app.redis.get('member').hset('juyou_ticket_' + sessionid, 'pay_wxid', JSON.stringify(obj_pay_wxid));

        //logger.info('开始跳转: ' + rurl + '&v=' + (new Date().getTime()));
        ctx.redirect(rurl);
        //logger.info('跳转结束: ' + rurl + '&v=' + (new Date().getTime()));
    }



    



    //0,不需要授权， 1，需要授权
    async checkNeedAuth () {

        const { ctx, app } = this;
        const { logger } = ctx;

        const company_code = ctx.query.company_code;

        //logger.info(company_code);

        //
        if(company_code == undefined){
            ctx.helper.success('2');
            return;
        }

        //判断是否已经登录
        const sessionid = ctx.cookies.get('juyou-ticket-' + company_code);

        console.log(sessionid);

        // logger.info('juyou_ticket_' + sessionid);

        let sessionV = '';

        //如果redis里有信息，说明已经登录成功，不需要授权。
        if(sessionid !== undefined){
            sessionV = await app.redis.get('member').hget('juyou_ticket_' + sessionid, 'id');
            if (sessionV !== null) {
                //不需要授权
                ctx.helper.success('0');
                return;
            }
        }


        //ctx.cookies.set('juyou-ticket', '1212121211212211');
        
        //需要授权
        ctx.helper.success('1');

    }



    async auth1 () {
        console.log('auth');

        const { ctx, app } = this;
        const { logger } = ctx;

        //判断是否已经登录
        // const sessionid = await ctx.cookies.get('juyou-ticket');
        // logger.info('juyou-ticket' + sessionid);

        // //如果redis里有信息，说明已经登录成功，直接返回。
        // if(sessionid !== undefined){
        //     const sessionV = await app.redis.get('member').hget('juyou_ticket_' + sessionid, 'id');
        //     if (sessionV !== null) {
        //         ctx.helper.success(sessionV);
        //         return;
        //     }
        // }

        //1.根据company_code获得 wxid,appid
        const company_code = ctx.query.company_code;
        const rurl = ctx.query.rurl;

        // logger.info(company_code);
        // logger.info(rurl);

        if(company_code === undefined){
            ctx.helper.error(103, '需要company_code参数');
            return;
        }

        if(rurl === undefined){
            ctx.helper.error(1031, '需要rurl参数');
            return;
        }

        const companyInfo = await ctx.service.company.info(company_code);

        //logger.info(companyInfo);

        if(companyInfo == undefined){
            ctx.helper.error(102, '该机构没有配置服务号');
            return;
        }


        let cooiesuuid = ctx.cookies.get('juyou-ticket-' + company_code);
        if(cooiesuuid == undefined){
            //5.存cookie
            //登录成功后续操作
            cooiesuuid = await ctx.service.util.uuid(40, 16);
            // 客户端的cookie
            ctx.cookies.set('juyou-ticket-' + company_code, cooiesuuid, {
                'domain' : '.hidlq.com',
                'maxAge' : 1000 * 60 * 60 * 24 * 14,
            });
        }



        const successurl = 'https://api.hidlq.com/v1/un/getwxcode';

        let url = 'https://open.weixin.qq.com/connect/oauth2/authorize?';

        url += 'appid=' + companyInfo.appid;

        url += '&redirect_uri=' + encodeURIComponent(successurl);

        url += '&response_type=code&scope=snsapi_userinfo';

        const uuid = await ctx.service.util.uuid(40, 16);
        //const msg = company_code + '@dlq@' + companyInfo.appid + '@dlq@' + companyInfo.appsecret + '@dlq@' + companyInfo.wxid + '@dlq@' + companyInfo.pay_wxid + '@dlq@' + rurl;
        const msg = company_code + '@dlq@' + rurl + '@dlq@' + cooiesuuid;

        //await app.redis.get('tmp').hset('dlq_tmp', uuid, msg);
        await app.redis.get('tmp').set(uuid, msg);
        await app.redis.get('tmp').expire(uuid, 60 * 60 * 24);

        url += '&state=' + uuid + '#wechat_redirect';

        //logger.info(url);

        //ctx.helper.success(url);

        ctx.redirect(url);

        //const result = await ctx.curl(url);

        //logger.info(result);
    }


    //由微信授权后跳转，带回code和state中的内容。
    async getwxcode () {

        console.log('getwxcode');

        const { ctx, app } = this;
        const { logger } = ctx;

        const code = ctx.query.code;
        const state = ctx.query.state;

        console.log(state);

        if(state == undefined){
            ctx.helper.error(103, '缺少 state 参数');
            return;
        }

        //const msg = await app.redis.get('tmp').hget('dlq_tmp', state);
        const msg = await app.redis.get('tmp').get(state);
        //app.redis.get('tmp').del('dlq_tmp', state);

        const arr = msg.split('@dlq@');

        if(arr.length !== 3){
            ctx.helper.error(104, 'state 不正确');
            return;
        }

        const company_code = arr[0];
        const rurl = arr[1];
        const uuid = arr[2];

        const companyInfo = await ctx.service.company.info(company_code);
        //logger.info(companyInfo);

        const appid = companyInfo.appid;
        const secret = companyInfo.appsecret;
        const wxid = companyInfo.wxid;
        const pay_wxid = companyInfo.pay_wxid;
        const cash_wxid = companyInfo.cash_wxid;
        

        // logger.info('company_code : ' + company_code);
        // logger.info('appid : ' + appid);
        // logger.info('secret : ' + secret);
        // logger.info('wxid : ' + wxid);
        // logger.info('pay_wxid : ' + pay_wxid);
        // logger.info('cash_wxid : ' + cash_wxid);
        // logger.info('rurl : ' + rurl);

        let url = 'https://api.weixin.qq.com/sns/oauth2/access_token?';
        url += 'appid=' + appid;
        url += '&secret=' + secret;
        url += '&code=' + code;
        url += '&grant_type=authorization_code';

        const result = await ctx.curl(url, { dataType: 'json' });

        //console.log(result);
        // logger.info('accesstoken :');
        // logger.info(result);

        if(result.data.errcode !== undefined){
            ctx.helper.error(106, result.data.errmsg);
            return;
        }

        let url1 = 'https://api.weixin.qq.com/sns/userinfo?';
        url1 += 'access_token=' + result.data.access_token;
        url1 += '&openid=' + result.data.openid + '&lang=zh_CN';

        const result1 = await ctx.curl(url1, { dataType: 'json' });

        // console.log(result1);
        // logger.info('用户信息 : ');
        // logger.info(result1);

        if(result1.data.errcode !== undefined){
            ctx.helper.error(106, result1.data.errmsg);
            return;
        }

        //4.获取用户openid
        const userinfo = {
            'nickname' : result1.data.nickname,
            'headimgurl' : result1.data.headimgurl,
            'openid' : result1.data.openid,
        };
        
        const user_base = 'wx' + wxid + '-' + userinfo.openid;
        //logger.info('用户user_base : ' + user_base);

        
        //7.查询用户，看是否存在，
        const memberinfo = await ctx.service.member.info(user_base, company_code);
        // console.log('memberinfo');
        // console.log(memberinfo);
        // logger.info('memberinfo');
        // logger.info(memberinfo);


        //8.已经存在，更新；不存在插入。
        if(memberinfo !== undefined){
            //logger.info('已经存在');

            const r = await ctx.service.member.update({
                nickname : userinfo.nickname, 
                headimgurl : userinfo.headimgurl, 
                user_base,
                company_code,
            });

            if(!r){
                //logger.info('更新用户信息失败');
                ctx.helper.error(105, '更新用户信息失败');
                return;
            }

        }else{
            const r = await ctx.service.member.create({
                openid : userinfo.openid, 
                nickname : userinfo.nickname, 
                headimgurl : userinfo.headimgurl, 
                user_base, 
                wxid, 
                company_code,
            })

            if(!r){
                //logger.info('添加用户失败');
                ctx.helper.error(105, '添加用户失败');
                return;
            }
        }

        //logger.info('写cookies开始。');

        // //5.存cookie
        // //登录成功后续操作
        // const uuid = await ctx.service.util.uuid(40, 16);
        // // 客户端的cookie
        // ctx.cookies.set('juyou-ticket-' + company_code, uuid, {
        //     'domain' : '.hidlq.com'
        // });
        // logger.info('写cookies开始。');

        // ctx.cookies.set('juyou-ticket-' + company_code, uuid, {
        //     'domain' : 'shop.hidlq.com'
        // });

        //如果有cookies，直接用这个cookies存redis。如果没有，重新生成。
        // let uuid = ctx.cookies.get('juyou-ticket-' + company_code);
        // if(uuid == undefined){
        //     //5.存cookie
        //     //登录成功后续操作
        //     uuid = await ctx.service.util.uuid(40, 16);
        //     // 客户端的cookie
        //     ctx.cookies.set('juyou-ticket-' + company_code, uuid, {
        //         'domain' : '.hidlq.com',
        //         'maxAge' : 1000 * 60 * 60 * 24 * 14,
        //     });
        // }

        //写之前，先清空一下redis
        //await app.redis.get('member').del('juyou_ticket_' + uuid);

        //6.存redis
        const info = {
            'id' : user_base,
            'bind_seller_company_code' : company_code,
            'nickname' : userinfo.nickname,
            'headimgurl' : userinfo.headimgurl,
            cash_wxid,
        };

        //logger.info('juyou_ticket_' + uuid + '写redis开始。');

        for (let key in info) {
            console.log(key);
            await app.redis.get('member').hset('juyou_ticket_' + uuid, key, info[key]);
        }
        await app.redis.get('member').expire('juyou_ticket_' + uuid, 60 * 60 * 24 * 15);
        
        //logger.info('juyou_ticket_' + uuid + '写redis结束。');


        const dlqid =  await app.redis.get('member').hget('juyou_ticket_' + uuid, 'id');

        //logger.info('juyou_ticket_' + uuid + ' 的 dlqid : ' + dlqid);


        // console.log('juyou_ticket_' + uuid);
        // logger.info('juyou_ticket_' + uuid);


        //logger.info('即将跳转 : ' + rurl + '&v=' + (new Date().getTime()));
        ctx.redirect(rurl);
        //logger.info('跳转结束 : ' + rurl + '&v=' + (new Date().getTime()));

        // 设置响应体和状态码
        //ctx.helper.success(rurl);

    }


    async mnlogin () {
        const { ctx, app } = this;

        //要支付到的companycode。
        const company_code = ctx.query.company_code;

        console.log(company_code);

        //判断是否已经登录
        const sessionid = ctx.cookies.get('juyou-ticket-' + company_code);

        console.log(sessionid);
        
        if(sessionid === undefined){
            const uuid = await ctx.service.util.uuid(40, 16);

            ctx.cookies.set('juyou-ticket-' + company_code, uuid);

            console.log(uuid);

            await app.redis.get('member').hset('juyou_ticket_' + uuid, 'id', 'wx1-oxaRmwKwtzbTrlM8j_Ofd05Hl3e0');
            await app.redis.get('member').hset('juyou_ticket_' + uuid, 'headimgurl', 'http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKmLlP4j7HgfAN5WicVdXU6aj3r9PZurQDN1KfyyGWJ7bS3YPq7qJiaAt9UUnoKW4QrLKYuUN5zTS5Q/132');
            await app.redis.get('member').hset('juyou_ticket_' + uuid, 'nickname', 'dlq模拟登录');
            await app.redis.get('member').hset('juyou_ticket_' + uuid, 'bind_seller_company_code', 'LW00035');

            await app.redis.get('member').expire('juyou_ticket_' + uuid, 60 * 60 * 24 * 15);

        }

        ctx.helper.success('1');
    }

    async test1(){
        const { ctx, app } = this;

        ctx.helper.success('123123');
    }

    async test () {
        console.log('test');

        const { ctx, app } = this;

        const result = await app.redis.get('system').get('wx_chat_access_token_134');

        console.log(result);

        //let result = await app.oss.list();

        //let result1 = await app.oss.put('object-name', new Buffer('hello world'));

        //console.log(result);
        //console.log(result1);

        // const now = new Date();

        // const haha = new Date(now.getTime() + 60 * 1000 * 5);

        // const now1 = ctx.helper.dateFtt("yyyy-MM-dd hh:mm:ss",now);
        // const haha1 = ctx.helper.dateFtt("yyyy-MM-dd hh:mm:ss",haha);

        // console.log(now1);
        // console.log(haha1);
        //const aaa = await ctx.service.member.info111('123', '456');

        //ctx.helper.success(aaa);
    }


    async file () {
        this.ctx.redirect('http://cardv2.oss-cn-hangzhou.aliyuncs.com/MP_verify_T1LLNeCSL4P8T9Bw.txt');
    }

    async file1 () {
        this.ctx.body = 'C1p4Fbrbhy6sGK3J';
        //this.ctx.redirect('http://cardv2.oss-cn-hangzhou.aliyuncs.com/MP_verify_C1p4Fbrbhy6sGK3J.txt');
    }

    
}
module.exports = MemberController;